package indexer;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;

import domain.Document;

/**
 * Esta clase extiende la funcionalidad de IndexerFileReader para leer las palabras de archivos HTML.
 * @author Mauricio Silclir
 */
public class HTMLReader extends IndexerFileReader
{
	private File file;
	private String fileText;
	private Document document;
	
	public HTMLReader()
	{
		this.fileText = "";
	}
	
	public Document getDocument() {
		return document;
	}

	public void setDocument(Document document) {
		this.document = document;
	}
	
	/**
	 * getFile.
	 *
	 * @return file : Variable del tipo File
	 */
	public File getFile() {
		return file;
	}

	/**
	 * setFile.
	 *
	 * @param file : Variable del tipo File
	 */
	public void setFile(File file) {
		this.file = file;
	}
	

	@Override
	protected String[] parseWord() {
		// regex que encuadra todo lo que no sea alfanumerico (^\\ww)
		// y todo lo que no sean los unicodes precitados
		String aux = fileText.replaceAll("\\<.*?>","");
		String regex = "[[^\\w]&&[^" + unicodeCharacters + "]]";
		aux = aux.replaceAll(regex, " ");
		boolean contains = aux.contains("  ");
		// limpiamos los espacios en blanco repetidos
		while (contains) {
			aux = aux.replaceAll("  ", " ");
			contains = aux.contains("  ");
		}
		String[] words = aux.toLowerCase().trim().split(" ");
		return words;
	}

	@Override
	protected String[] processFile(File file) {
		if (file == null)
			return null;
		try {
			fileText = getFileText(file);
		} catch (FileNotFoundException ex) {
			ex.printStackTrace();
			return null;
		} catch (IOException ex) {
			ex.printStackTrace();
			return null;
		}
		return parseWord();
	}

}
